/* stylelint-disable scss/at-extend-no-missing-placeholder -- font-awesome doesn't provide placeholders */

%fa-regular {
    @extend .fa-regular;
}

%fa-brands {
    @extend .fa-brands;
}

%icon-base {
    @extend .fa;
    line-height: inherit;
}

button > .icon-base {
    vertical-align: middle;
}

.icon-2xs {
    @extend .fa-2xs;
}

.icon-xs {
    @extend .fa-xs;
}

.icon-sm {
    @extend .fa-sm;
}

.icon-lg {
    @extend .fa-lg;
}

.icon-xl {
    @extend .fa-xl;
}

.icon-2xl {
    @extend .fa-2xl;
}

.icon-fw {
    @extend .fa-fw;
}

// GENERIC ICONS
.close-icon {
    @extend %icon-base;
    @extend .fa-xmark;
}

.save-icon {
    @extend %icon-base;
    @extend .fa-floppy-disk;
}

.duplicate-icon {
    @extend %icon-base;
    @extend .fa-clone;
}

.rename-icon {
    @extend %icon-base;
    @extend .fa-pen-to-square;
}

.delete-icon {
    @extend %icon-base;
    @extend .fa-times;
}

.refresh-icon {
    @extend %icon-base;
    @extend .fa-rotate-right;
}

.properties-icon {
    @extend %icon-base;
    @extend .fa-wrench;
}

.backspace-icon {
    @extend %icon-base;
    @extend .fa-delete-left;
}

.check-icon {
    @extend %icon-base;
    @extend .fa-check;
}

.check-circle-icon {
    @extend %icon-base;
    @extend .fa-circle-check;
}

.warning-icon {
    @extend %icon-base;
    @extend .fa-warning;
}

.error-icon {
    @extend %icon-base;
    @extend .fa-circle-xmark;
}

.actions-icon {
    @extend %icon-base;
    @extend .fa-bolt;
}

.up-icon {
    @extend %icon-base;
    @extend .fa-arrow-up;
}

.down-icon {
    @extend %icon-base;
    @extend .fa-arrow-down;
}

.search-icon {
    @extend %icon-base;
    @extend .fa-magnifying-glass;
}

.keyboard-icon {
    @extend %icon-base;
    @extend %fa-regular;
    @extend .fa-keyboard;
}

.code-icon {
    @extend %icon-base;
    @extend .fa-code;
}

.folder-icon {
    @extend %icon-base;
    @extend .fa-folder;
}

.folder-open-icon {
    @extend %icon-base;
    @extend .fa-folder-open;
}

.caret-down-icon {
    @extend %icon-base;
    @extend .fa-caret-down;
}

.caret-up-icon {
    @extend %icon-base;
    @extend .fa-caret-up;
}

.caret-right-icon {
    @extend %icon-base;
    @extend .fa-caret-right;
}

.caret-left-icon {
    @extend %icon-base;
    @extend .fa-caret-left;
}

.angle-down-icon {
    @extend %icon-base;
    @extend .fa-angle-down;
}

.angle-up-icon {
    @extend %icon-base;
    @extend .fa-angle-up;
}

.angle-right-icon {
    @extend %icon-base;
    @extend .fa-angle-right;
}

.angle-left-icon {
    @extend %icon-base;
    @extend .fa-angle-left;
}

.angles-down-icon {
    @extend %icon-base;
    @extend .fa-angles-down;
}

.angles-up-icon {
    @extend %icon-base;
    @extend .fa-angles-up;
}

.angles-right-icon {
    @extend %icon-base;
    @extend .fa-angles-right;
}

.angles-left-icon {
    @extend %icon-base;
    @extend .fa-angles-left;
}

.star-icon {
    @extend %icon-base;
    @extend .fa-star;
}

.tree-collapse-node-icon {
    @extend %icon-base;
    @extend .fa-minus;
}

.tree-collapse-all-icon {
    @extend %icon-base;
    @extend .fa-down-left-and-up-right-to-center;
}

.tree-expand-node-icon {
    @extend %icon-base;
    @extend .fa-plus;
}

.tree-expand-all-icon {
    @extend %icon-base;
    @extend .fa-up-right-and-down-left-from-center;
}

.actions-dropdown-icon {
    @extend %icon-base;
    @extend .fa-ellipsis-v;
}

.open-external-icon {
    @extend %icon-base;
    @extend .fa-square-arrow-up-right;
}

.case-sensitive-icon {
    @extend %icon-base;
    @extend .fa-a;
}

.pop-out-icon {
    @extend %icon-base;
    @extend .fa-window-maximize;
}

.html-icon {
    @extend %icon-base;
    @extend %fa-brands;
    @extend .fa-html5;
}

.excel-file-icon {
    @extend %icon-base;
    @extend .fa-file-excel;
}

.database-icon {
    @extend %icon-base;
    @extend .fa-database;
}

.cloud-icon {
    @extend %icon-base;
    @extend .fa-cloud;
}

// CONTEXTUAL ICONS
.window-close-icon {
    @extend %icon-base;
    @extend .fa-xmark;
}

.window-maximize-icon {
    @extend %icon-base;
    @extend .fa-square;
    @extend %fa-regular;
}

.window-restore-icon {
    @extend %icon-base;
    @extend .fa-window-restore;
    @extend %fa-regular;
}

.window-minimize-icon {
    @extend %icon-base;
    @extend .fa-minus;
}

.window-always-on-top-icon {
    @extend %icon-base;
    @extend .fa-thumb-tack;
}

.main-menu-icon {
    @extend %icon-base;
    @extend .fa-bars;
}

.info-icon {
    @extend %icon-base;
    @extend .fa-circle-info;
}

.attention-icon {
    @extend %icon-base;
    @extend .fa-circle-exclamation;
}

.undo-icon {
    @extend %icon-base;
    @extend .fa-rotate-left;
}

.redo-icon {
    @extend %icon-base;
    @extend .fa-rotate-right;
}

.cut-icon {
    @extend %icon-base;
    @extend .fa-scissors;
}

.copy-icon {
    @extend %icon-base;
    @extend .fa-copy;
}

.paste-icon {
    @extend %icon-base;
    @extend .fa-paste;
}

.zoom-in-icon {
    @extend %icon-base;
    @extend .fa-magnifying-glass-plus;
}

.zoom-out-icon {
    @extend %icon-base;
    @extend .fa-magnifying-glass-minus;
}

.explorer-icon {
    @extend %icon-base;
    @extend .fa-folder;
    @extend %fa-regular;
}

.output-icon {
    @extend %icon-base;
    @extend .fa-terminal;
}

.script-icon {
    @extend %icon-base;
    @extend .fa-code;
}

.run-icon {
    @extend %icon-base;
    @extend .fa-play;
}

.stop-icon {
    @extend %icon-base;
    @extend .fa-stop;
}

.open-folder-icon {
    @extend %icon-base;
    @extend .fa-arrow-up-right-from-square;
}

.add-script-icon {
    @extend %icon-base;
    @extend .fa-plus;
}

.clipboard-icon {
    @extend %icon-base;
    @extend .fa-clipboard;
    @extend %fa-regular;
}

.namespaces-icon {
    @extend %icon-base;
    @extend .fa-cube;
}

.mem-cache-icon {
    @extend %icon-base;
    @extend .fa-memory;
}

.theme-icon {
    @extend %icon-base;
    @extend .fa-circle-half-stroke;
}

.settings-icon {
    @extend %icon-base;
    @extend .fa-gear;
}

.quick-tips-icon {
    @extend %icon-base;
    @extend .fa-lightbulb;
    @extend %fa-regular;
}

.app-deps-check-icon {
    @extend %icon-base;
    @extend .fa-desktop;
}

.app-update-icon {
    @extend %icon-base;
    @extend .fa-cloud-arrow-down;
}

.pane-collapse-icon {
    @extend %icon-base;
    @extend .fa-minus;
}

.text-wrap-icon {
    @extend %icon-base;
    @extend .fa-align-center;
}

.script-status-success-icon {
    @extend %icon-base;
    @extend .fa-circle;
    color: #02c13d;
}

.script-status-error-icon {
    @extend %icon-base;
    @extend .fa-circle;
    color: #d60303;
}

.script-status-dirty-icon {
    @extend %icon-base;
    @extend .fa-circle;
    color: #838e98;
}

.clear-output-icon {
    @extend %icon-base;
    @extend .fa-ban;
}

.navigate-top-icon {
    @extend %icon-base;
    @extend .fa-arrow-right-to-bracket;
    transform: rotate(-90deg);
}

.navigate-up-icon {
    @extend %icon-base;
    @extend .fa-arrow-up;
}

.navigate-down-icon {
    @extend %icon-base;
    @extend .fa-arrow-down;
}

.navigate-bottom-icon {
    @extend %icon-base;
    @extend .fa-arrow-right-to-bracket;
    transform: rotate(90deg);
}

.scroll-on-output-icon {
    @extend %icon-base;
    @extend .fa-angles-down;
}

.add-package-icon {
    @extend %icon-base;
    @extend .fa-plus;
}

.download-package-icon {
    @extend %icon-base;
    @extend .fa-download;
}

.add-package-specific-icon {
    @extend %icon-base;
    @extend .fa-hashtag;
}

.package-dependency-group-icon {
    @extend %icon-base;
    @extend .fa-gear;
}

.edit-keyboard-shortcut-icon {
    @extend %icon-base;
    @extend .fa-pencil;
}

.reset-keyboard-shortcut-icon {
    @extend %icon-base;
    @extend .fa-rotate-left;
}

.results-serialization-settings-icon {
    @extend %icon-base;
    @extend .fa-cube;
}

.monaco-settings-icon {
    @extend %icon-base;
    @extend .fa-align-left;
}

.add-data-connection-icon {
    @extend %icon-base;
    @extend .fa-plus;
}

.script-folder-open-icon {
    @extend %icon-base;
    @extend .fa-folder-open;
}

.db-primary-key-icon {
    @extend %icon-base;
    @extend .fa-key;
}

.db-foreign-key-icon {
    @extend %icon-base;
    @extend .fa-arrow-right-arrow-left;
}

.db-navigation-icon {
    @extend %icon-base;
    @extend .fa-arrows-left-right;
}

.db-index-icon {
    @extend %icon-base;
    @extend .fa-info;
}

.use-data-connection-current-script-icon {
    @extend %icon-base;
    @extend .fa-circle-right;
}

.use-data-connection-new-script-icon {
    @extend %icon-base;
    @extend .fa-plus;
}

.data-connection-query-action {
    @extend %icon-base;
    @extend .fa-bolt;
}

.wiki-icon {
    @extend %icon-base;
    @extend .fa-book-open;
}

.github-icon {
    @extend %icon-base;
    @extend %fa-brands;
    @extend .fa-github;
}

.uncolored-icons [class*="-icon"] {
    color: unset !important;
}

.theme-netpad-dark.icon-theme-colorful,
.theme-netpad-dark .colored-icons {
    .case-sensitive-icon {
        color: #78909c;
    }

    .run-icon,
    .results-serialization-settings-icon {
        color: #02c13d;
    }

    .close-icon:not(.action-icon),
    .delete-icon,
    .backspace-icon {
        color: #fe5370;
    }

    .settings-icon,
    .window-always-on-top-icon {
        color: #93a3af;
    }

    .undo-icon,
    .redo-icon,
    .refresh-icon {
        color: greenyellow;
    }

    .cut-icon {
        color: #c792ea;
    }

    .copy-icon {
        color: #bce388;
    }

    .add-script-icon,
    .add-data-connection-icon,
    .use-data-connection-new-script-icon,
    .use-data-connection-current-script-icon,
    .add-package-specific-icon {
        color: #06c7e0;
    }

    .add-package-icon {
        color: #4fc3f7;
    }

    .download-package-icon {
        color: #ffcb6b;
    }

    .search-icon {
        color: #80cbc4;
    }

    .explorer-icon {
        color: #ffc107;
    }

    .clipboard-icon {
        color: #ffcb6b;
    }

    .namespaces-icon {
        color: #4fc3f7;
    }

    .mem-cache-icon {
        color: #c090fd;
    }

    .output-icon {
        color: #4fc3f7;
    }

    .star-icon {
        color: gold;
    }

    .tree-collapse-all-icon,
    .tree-expand-all-icon {
        color: #f8bbd0;
    }

    .quick-tips-icon {
        color: #ffcc00;
    }

    .app-deps-check-icon {
        color: #8d8d8d;
    }

    .wiki-icon {
        color: #47ac47;
    }
}

.theme-netpad-light.icon-theme-colorful,
.theme-netpad-light .colored-icons {
    .case-sensitive-icon {
        color: #5f7682;
    }

    .run-icon,
    .results-serialization-settings-icon {
        color: #65ad4a;
    }

    .close-icon:not(.action-icon),
    .delete-icon,
    .backspace-icon {
        color: #fe5370;
    }

    .settings-icon,
    .window-always-on-top-icon {
        color: #68818e;
    }

    .undo-icon,
    .redo-icon,
    .refresh-icon {
        color: green;
    }

    .cut-icon {
        color: #a652de;
    }

    .copy-icon {
        color: #99d44a;
    }

    .add-script-icon,
    .add-data-connection-icon,
    .use-data-connection-new-script-icon,
    .use-data-connection-current-script-icon,
    .add-package-specific-icon {
        color: #059bae;
    }

    .add-package-icon {
        color: #80d4f9;
    }

    .download-package-icon {
        color: #ffcb6b;
    }

    .search-icon {
        color: #4ab5ab;
    }

    .explorer-icon {
        color: #ffac07;
    }

    .clipboard-icon {
        color: #ffac07;
    }

    .namespaces-icon {
        color: #1eb2f5;
    }

    .mem-cache-icon {
        color: #865cca;
    }

    .output-icon {
        color: #1eb2f5;
    }

    .star-icon {
        color: gold;
    }

    .tree-collapse-all-icon,
    .tree-expand-all-icon {
        color: #f176a0;
    }

    .quick-tips-icon {
        color: #e99f00;
    }

    .app-deps-check-icon {
        color: #808080;
    }

    .wiki-icon {
        color: #47ac47;
    }
}
